Fix migrate.
authorsmh22@firebug.cl.cam.ac.uk <smh22@firebug.cl.cam.ac.uk>
Thu, 1 Dec 2005 11:27:29 +0000 (12:27 +0100)
committersmh22@firebug.cl.cam.ac.uk <smh22@firebug.cl.cam.ac.uk>
Thu, 1 Dec 2005 11:27:29 +0000 (12:27 +0100)
Signed-off-by: Steven Hand <steven@xensource.com>
tools/python/xen/xend/XendCheckpoint.py
tools/python/xen/xend/XendDomain.py

index 8d80bbc45befd3da656a16dca4a24f9566ff8d21..63d5821a005aef71d9a2a2f897f94197bf815bdb 100644 (file)
@@ -40,11 +40,19 @@ def write_exact(fd, buf, errmsg):
         raise XendError(errmsg)
 
 def read_exact(fd, size, errmsg):
-    buf = os.read(fd, size)
-    if len(buf) != size:
-        raise XendError(errmsg)
+    buf  = '' 
+    while size != 0: 
+        str = os.read(fd, size)
+        if not len(str):
+            log.error("read_exact: EOF trying to read %d (buf='%s')" % \
+                      (size, buf))
+            raise XendError(errmsg)
+        size = size - len(str)
+        buf  = buf + str
     return buf
 
+
+
 def save(fd, dominfo, live):
     write_exact(fd, SIGNATURE, "could not write guest state file: signature")
 
index 650a500e8ffb883b4b40317dcf4e5920e54f3610..c6fcddef4f78d91bd0961945df6016d5517d71b1 100644 (file)
@@ -397,6 +397,7 @@ class XendDomain:
             raise XendError("can't connect: %s" % err[1])
 
         sock.send("receive\n")
+        sock.recv(80) 
         XendCheckpoint.save(sock.fileno(), dominfo, live)